Eat Study Love

먹고 공부하고 사랑하라

SW 만학도 74

VS code C++ Debugging & Operator overloading

이번엔, C++ 코딩을 하며 자주 마주하는 디버깅의 현장을 살펴보겠다. 관련자료는 아래와 같다.  용량이 크진 않으니 VS Code를 통해 C++ 코딩 작업을 할 경우, 잘 참고해서 하면 되겠다. 기본적으로 디버깅할땐 print문을 통해서 디버깅하는 방법이 있고, VS Code 상의 Debug Extention을 이용하는 방법이 있다. 전자는 직관적이지만, 귀찮고 후자는 효과적이지만 방법을 터득하기가 귀찮다. 일단 간단하게 Debugging 실습을 진행해보자. #include #include using namespace std;int main(){ list lst = {1,2,3,4,5}; // i want to practice using pop_back function in list! ..

Function Overloading and Templates

금번 C++ 공부에선, Function Overloading 과 Templates 부분을 공부하고 관련 내용을 실습해보겠다.실습자료는 아래와 같다.  기본적으로 Function의 parameter에는 defulat 값을 넣을 수 있다.int divide( int a, int b = 2 ) { return a/b;} Function의 Overloading이란, Function들끼리 같은 이름을 Share하는데 Parameter type에 따라서 Return이 달라지는 것이다. 이 때, Return type만 가지고는 Function들 끼리 overload 할 수 없다. 다음은, Function Overload의 예시다. 보면, mySwap이라는 함수가 있는데, 이름이 다 같아도 input data의 typ..

C++ Object Oriented Programming(OOP), Overroad, Override 실습

C++과 관련된 시험에서 꼭 빠지지 않고 등장하는 것이 이 OOP 문제이다. OOP는 Class를 하나 만들어놓고, 그에 파생되는 객체를 가지고 노는 Programming이다. 이번에 해 볼 실습은, 2D Vector Class를 만들고, 해당 Class에 각 종 Operator를 Overroad 해본 뒤, OOP를 써서 Class 구현이 잘 되었는지 테스트 해보고, 2D Vector를 상속받은 Derived Class 3D Vector를 만들어 Class의 Inherit, Method의 Override를 잘 구현했는지 Test 해보겠다. 문제 풀이를 위한 Skeleton code는 아래와 같다.#include #include using namespace std;// Base class for 2D ve..

Heap Implementation [1]

Algorithm Part의 기본적인 Data Structure인 Heap에 대해서 Implementation 연습을 시작해본다. Heap의 경우 Priority Queue라고도 생각하면 되고, Max/Min Heap으로 구분된다. 특징으론 Max Heap을 예로 들었을 때, Heap Data 구조에 입력되는 Data는 크기가 큰 순서(Max)대로 우선순위를 갖은 체 저장된다. 이 말은, Heap에서 특정 Data를 꺼낼 때(Deque) 가장 크기가 큰 녀석이 추출되는 것이다. 일반적으로 우리가 아는 queue구조에서 우선 순위만 선입선출이 아닌, Data 크기에 따라 결정된다는 것을 알고 있으면 된다. 따라서, 내부에 저장된 Data를 임의로 Search 할 수는 없지만 우리가 정한 Logic( Max..

Linked list with Stack Node 문제

이번 문제는 Linked list를 C 코드로 구현하는 것인데, 특이점은 각 Node가 Stack 구조라는 것이다.즉 아래와 같이 Linked list Node가 존재한다는 것!  다시 말하면, 밖에서 봤을 땐 하나의 커다란 Stack인데 이것들이 내부에선 Linked list로 구성이 되어 있다는 것이다.문제의 조건은 아래와 같다.   1. 각 Stack Node에는 Max-capacity가 존재하다. Max-capacity를 넘어서면 새로운 Stack Node를 만든다.   2. list_size() method를 구현하라. 현재 원소가 존재하는 List Node(stack)의 개수를 반환한다.   3. push() method를 구현하라.   4. pop() method를 구현하라. 원소가 Link..

SW 만학도/C 2024.12.23

heap 자료구조 (Priority queue /Min&Max Heap) 뿌시기

Python / C / C++에서 Array / Linked List 기반으로 heap 구조를 만들어보겠다. Skeleton Code는 GPT를 참고했으며, Min/Max heap은 사실 한 끝 차이라 이 둘을 그냥 번갈아가면서 구현해보기로 한다. 1. Python - Array - Min heapclass PriorityQueueArray: def __init__(self, is_min=True): self.heap = [] self.is_min = is_min # True for min-heap, False for max-heap def parent(self, i): return (i - 1) // 2 def left_child(self, i):..

SW 만학도/C 2024.11.25

C Struct 연습

첨부파일의 코드에는 필자가 직접 연습한 것과 약간의 낙서(?)가 가미되어 있다ㅎㅎ   C에는 Python / C++의 Class와 유사하게 Struct라는 구조가 있다. 이 Struct는 Array보단 고차원의 구조로, 각 종 data type 또는 다른 Sturct type의 Variable을 member로 가질 수 있다. 하지만, fucntion을 Member 변수로 갖지 못하고 Class 상속 / Polymorphism, Instance Construct/Destruct 등 객체지향프로그래밍 즉 Oriented Object Programming을 실행하기엔 부족함이 많다. 그래도 보수적인 C Programming 영역에서 가장 고차원적인 구조이기에 연습이 필요하다. Q1.  첫 번째론 좌표평면 상에..

SW 만학도/C 2024.08.22

C programming file I/O 연습

사실 FILE I/O의 경우엔 코딩 공부를 할 때 잘 까먹기 쉽다. 왜냐하면, file I/O 할 때가 아니면 평소에 쓸 일이 없는 문법이 많기 때문이다. 그래서 종종 Remind 차원에서 file I/O를 건드려줘야 기억에 오래 남는다. 물론 그 때 그 때 인터넷 검색해서 실행해도 충분히 코딩을 할 수 있지만, 그래도 명색이 프로그래밍 공부를 하는 사람이라면 이 정도는 능숙하게 처리할 수 있어야 멋지다. 첨부된 파일에선 여러 가지 scanf + file I/O 연습을 할 수 있다. 주석처리한 부분은 나만의 낙서장(?)으로 사용된 것이라 삭제하고 코딩을 진행하면 된다. Q1.scanf 연습하는 문제다.12-hour 시간을 user로부터 입력받아 24-hour 시간으로 return해주는 코드를 짜는 것! ..

SW 만학도/C 2024.08.21

Review 11 - Dynamic Programming

https://eglife.tistory.com/123 Review 10 - Single-Source-Shortest Path in C++https://eglife.tistory.com/103 Review 9 - MST(Minimum Spanning Trees) in C++https://eglife.tistory.com/98 [Algorithm] Review 8 - Priority Queues and Heaps in C++https://eglife.tistory.com/92 [Main course!] Review 7 - Inheritance in C++https://eglife.tiseglife.tistory.com 프로그래밍 최악의 손님 DP다. 재귀적으로 진행되는 코딩은 솔루션을 펼쳐놓고 봐도 뭔 소..

Review 10 - Single-Source-Shortest Path in C++

https://eglife.tistory.com/103 Review 9 - MST(Minimum Spanning Trees) in C++https://eglife.tistory.com/98 [Algorithm] Review 8 - Priority Queues and Heaps in C++https://eglife.tistory.com/92 [Main course!] Review 7 - Inheritance in C++https://eglife.tistory.com/89 Review 5 - Special Members in C++https://eglife.tistory.com/88 eglife.tistory.comGraph의 path와 관련된 알고리즘이다. 특정 노드에서 출발하는 가장 짧은 path를 찾는..